{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "from ortools.sat.python import cp_model\n",
    "from pydantic import BaseModel, PositiveInt, NonNegativeFloat, model_validator\n",
    "from math import floor, ceil"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "class KnapsackInstance(BaseModel):\n",
    "    weights: list[PositiveInt]  # the weight of each item\n",
    "    values: list[PositiveInt]  # the value of each item\n",
    "    capacity: PositiveInt  # the capacity of the knapsack\n",
    "\n",
    "    @model_validator(mode=\"after\")\n",
    "    def check_lengths(cls, v):\n",
    "        if len(v.weights) != len(v.values):\n",
    "            raise ValueError(\"Mismatch in number of weights and values.\")\n",
    "        return v\n",
    "\n",
    "\n",
    "class KnapsackSolverConfig(BaseModel):\n",
    "    time_limit: PositiveInt = 900  # Solver time limit in seconds\n",
    "    opt_tol: NonNegativeFloat = 0.01  # Optimality tolerance (1% gap allowed)\n",
    "    log_search_progress: bool = False  # Whether to log search progress\n",
    "\n",
    "\n",
    "class KnapsackSolution(BaseModel):\n",
    "    selected_items: list[int]  # Indices of the selected items\n",
    "    objective: float  # Objective value of the solution\n",
    "    upper_bound: float  # Upper bound of the solution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "class MultiObjectiveKnapsackSolver:\n",
    "    def __init__(self, instance: KnapsackInstance, config: KnapsackSolverConfig):\n",
    "        self.instance = instance\n",
    "        self.config = config\n",
    "        self.model = cp_model.CpModel()\n",
    "        self.n = len(instance.weights)\n",
    "        self.x = [self.model.new_bool_var(f\"x_{i}\") for i in range(self.n)]\n",
    "        self._objective = 0\n",
    "        self._build_model()\n",
    "        self.solver = cp_model.CpSolver()\n",
    "\n",
    "    # ----------------------------------------\n",
    "    # Objective functions\n",
    "    # ----------------------------------------\n",
    "\n",
    "    def set_maximize_value_objective(self):\n",
    "        self._objective = sum(\n",
    "            value * x_i for value, x_i in zip(self.instance.values, self.x)\n",
    "        )\n",
    "        self.model.maximize(self._objective)\n",
    "\n",
    "    def set_minimize_weight_objective(self):\n",
    "        self._objective = sum(\n",
    "            weight * x_i for weight, x_i in zip(self.instance.weights, self.x)\n",
    "        )\n",
    "        self.model.minimize(self._objective)\n",
    "\n",
    "    def _set_solution_as_hint(self):\n",
    "        \"\"\"\n",
    "        Set the current solution as a hint for the next solve.\n",
    "        Important: If you add constraints that are not satisfied by the current solution,\n",
    "        this is not always useful. It is primarily useful when you want to use this solution\n",
    "        as a starting point for another solve with a different objective function.\n",
    "        \"\"\"\n",
    "        for i, v in enumerate(self.model.proto.variables):\n",
    "            v_ = self.model.get_int_var_from_proto_index(i)\n",
    "            # We are using the internal protobuf here, so future versions of OR-Tools\n",
    "            # might behave differently. Adding an assertion to verify (deactivate in production for speed).\n",
    "            assert v.name == v_.name, \"Should be the same variable\"\n",
    "            self.model.add_hint(v_, self.solver.value(v_))\n",
    "\n",
    "    def fix_current_objective(self, ratio: float = 1.0):\n",
    "        \"\"\"\n",
    "        Fix the current objective value to not degenerate.\n",
    "        You can then exchange the objective function with another one,\n",
    "        while the value of the previous one is fixed.\n",
    "\n",
    "        These constraints will not violate the current solution, making hints\n",
    "        extremely useful.\n",
    "        \"\"\"\n",
    "        if ratio == 1.0:\n",
    "            self.model.add(self._objective == self.solver.objective_value)\n",
    "        elif ratio > 1.0:\n",
    "            self.model.add(self._objective <= ceil(self.solver.objective_value * ratio))\n",
    "        else:\n",
    "            # If the ratio is less than 1, we have a maximization problem, thus, we\n",
    "            # need to lower bound.\n",
    "            self.model.add(\n",
    "                self._objective >= floor(self.solver.objective_value * ratio)\n",
    "            )\n",
    "\n",
    "    # ----------------------------------------\n",
    "    # Build and solve\n",
    "    # ----------------------------------------\n",
    "\n",
    "    def _add_constraints(self):\n",
    "        used_weight = sum(\n",
    "            weight * x_i for weight, x_i in zip(self.instance.weights, self.x)\n",
    "        )\n",
    "        self.model.add(used_weight <= self.instance.capacity)\n",
    "\n",
    "    def _build_model(self):\n",
    "        self._add_constraints()\n",
    "        self.set_maximize_value_objective()\n",
    "\n",
    "    def solve(self) -> KnapsackSolution:\n",
    "        self.solver.parameters.max_time_in_seconds = self.config.time_limit\n",
    "        self.solver.parameters.relative_gap_limit = self.config.opt_tol\n",
    "        self.solver.parameters.log_search_progress = self.config.log_search_progress\n",
    "        status = self.solver.solve(self.model)\n",
    "        if status in [cp_model.OPTIMAL, cp_model.FEASIBLE]:\n",
    "            # If we have a solution, we add it as a hint for the next solve.\n",
    "            self._set_solution_as_hint()\n",
    "            return KnapsackSolution(\n",
    "                selected_items=[\n",
    "                    i for i in range(self.n) if self.solver.value(self.x[i])\n",
    "                ],\n",
    "                objective=self.solver.objective_value,\n",
    "                upper_bound=self.solver.best_objective_bound,\n",
    "            )\n",
    "        return KnapsackSolution(\n",
    "            selected_items=[], objective=0, upper_bound=float(\"inf\")\n",
    "        )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "def analyze_solution(instance: KnapsackInstance, solution: KnapsackSolution):\n",
    "    print(\"Num Selected items:\", len(solution.selected_items))\n",
    "    print(\n",
    "        \"Total weight of selected items:\",\n",
    "        sum(instance.weights[i] for i in solution.selected_items),\n",
    "    )\n",
    "    print(\n",
    "        \"Total value of selected items:\",\n",
    "        sum(instance.values[i] for i in solution.selected_items),\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Starting CP-SAT solver v9.10.4067\n",
      "Parameters: max_time_in_seconds: 15 log_search_progress: true relative_gap_limit: 0.01\n",
      "Setting number of workers to 16\n",
      "\n",
      "Initial optimization model '': (model_fingerprint: 0x592646cfd27bed9d)\n",
      "#Variables: 800 (#bools: 800 in objective)\n",
      "  - 800 Booleans in [0,1]\n",
      "#kLinearN: 1 (#terms: 800)\n",
      "\n",
      "Starting presolve at 0.00s\n",
      "  2.41e+00s  0.00e+00d  [DetectDominanceRelations] \n",
      "  1.06e+00s  0.00e+00d  [DetectDominanceRelations] \n",
      "  3.46e+00s  0.00e+00d  [PresolveToFixPoint] #num_loops=3 #num_dual_strengthening=2 \n",
      "  3.53e-04s  0.00e+00d  [ExtractEncodingFromLinear] \n",
      "[Symmetry] Graph for symmetry has 3'135 nodes and 169'080 arcs.\n",
      "[Symmetry] Symmetry computation done. time: 0.000781933 dtime: 0.00395586\n",
      "[SAT presolve] num removable Booleans: 0 / 778\n",
      "[SAT presolve] num trivial clauses: 0\n",
      "[SAT presolve] [0s] clauses:82984 literals:165968 vars:778 one_side_vars:778 simple_definition:0 singleton_clauses:0\n",
      "[SAT presolve] [0.0213627s] clauses:82984 literals:165968 vars:778 one_side_vars:778 simple_definition:0 singleton_clauses:0\n",
      "[SAT presolve] [0.021576s] clauses:82984 literals:165968 vars:778 one_side_vars:778 simple_definition:0 singleton_clauses:0\n",
      "  2.03e-02s  1.76e-02d  [Probe] #probed=1'556 \n",
      "  2.82e-01s  0.00e+00d  [MaxClique] \n",
      "  1.05e+00s  0.00e+00d  [DetectDominanceRelations] \n",
      "  1.07e+00s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "  3.22e-03s  0.00e+00d  [ProcessAtMostOneAndLinear] \n",
      "  3.07e-02s  0.00e+00d  [DetectDuplicateConstraints] \n",
      "  1.33e-03s  0.00e+00d  [DetectDominatedLinearConstraints] #relevant_constraints=1 \n",
      "  9.13e-04s  0.00e+00d  [DetectDifferentVariables] \n",
      "  3.09e-02s  1.23e-03d  [ProcessSetPPC] #relevant_constraints=82'985 \n",
      "  1.36e-03s  0.00e+00d  [FindAlmostIdenticalLinearConstraints] \n",
      "  7.04e-03s  6.72e-03d  [FindBigAtMostOneAndLinearOverlap] \n",
      "  1.05e-03s  3.86e-03d  [FindBigVerticalLinearOverlap] \n",
      "  5.07e-04s  3.89e-06d  [FindBigHorizontalLinearOverlap] #linears=1 \n",
      "  5.82e-04s  0.00e+00d  [MergeClauses] \n",
      "  7.23e-01s  0.00e+00d  [DetectDominanceRelations] \n",
      "  7.32e-01s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "  7.05e-01s  0.00e+00d  [DetectDominanceRelations] \n",
      "  7.15e-01s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "[Symmetry] Graph for symmetry has 3'135 nodes and 169'080 arcs.\n",
      "[Symmetry] Symmetry computation done. time: 0.000759301 dtime: 0.00395586\n",
      "[SAT presolve] num removable Booleans: 0 / 778\n",
      "[SAT presolve] num trivial clauses: 0\n",
      "[SAT presolve] [0s] clauses:82984 literals:165968 vars:778 one_side_vars:778 simple_definition:0 singleton_clauses:0\n",
      "[SAT presolve] [0.020147s] clauses:82984 literals:165968 vars:778 one_side_vars:778 simple_definition:0 singleton_clauses:0\n",
      "[SAT presolve] [0.0203241s] clauses:82984 literals:165968 vars:778 one_side_vars:778 simple_definition:0 singleton_clauses:0\n",
      "  2.31e-02s  1.76e-02d  [Probe] #probed=1'556 \n",
      "  2.79e-01s  0.00e+00d  [MaxClique] \n",
      "  1.05e+00s  0.00e+00d  [DetectDominanceRelations] \n",
      "  1.07e+00s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "  6.14e-03s  0.00e+00d  [ProcessAtMostOneAndLinear] \n",
      "  3.68e-02s  0.00e+00d  [DetectDuplicateConstraints] \n",
      "  4.14e-03s  0.00e+00d  [DetectDominatedLinearConstraints] #relevant_constraints=1 \n",
      "  2.57e-03s  0.00e+00d  [DetectDifferentVariables] \n",
      "  3.40e-02s  1.25e-03d  [ProcessSetPPC] #relevant_constraints=82'985 \n",
      "  2.45e-03s  0.00e+00d  [FindAlmostIdenticalLinearConstraints] \n",
      "  9.41e-03s  6.79e-03d  [FindBigAtMostOneAndLinearOverlap] \n",
      "  2.69e-03s  3.86e-03d  [FindBigVerticalLinearOverlap] \n",
      "  2.21e-03s  3.89e-06d  [FindBigHorizontalLinearOverlap] #linears=1 \n",
      "  2.21e-03s  0.00e+00d  [MergeClauses] \n",
      "  7.11e-01s  0.00e+00d  [DetectDominanceRelations] \n",
      "  7.21e-01s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "  1.42e-03s  0.00e+00d  [ExpandObjective] \n",
      "\n",
      "Presolve summary:\n",
      "  - 0 affine relations were detected.\n",
      "  - rule 'TODO dual: only one blocking constraint?' was applied 2'396 times.\n",
      "  - rule 'TODO dual: only one unspecified blocking constraint?' was applied 3'872 times.\n",
      "  - rule 'TODO independent linear: minimize single linear constraint' was applied 2 times.\n",
      "  - rule 'domination: added implications' was applied 82'984 times.\n",
      "  - rule 'domination: fixed to lb.' was applied 22 times.\n",
      "  - rule 'linear: fixed or dup variables' was applied 1 time.\n",
      "  - rule 'linear: simplified rhs' was applied 1 time.\n",
      "  - rule 'presolve: 22 unused variables removed.' was applied 1 time.\n",
      "  - rule 'presolve: iteration' was applied 2 times.\n",
      "\n",
      "Presolved optimization model '': (model_fingerprint: 0xcb3b6abd4328c397)\n",
      "#Variables: 778 (#bools: 778 in objective)\n",
      "  - 778 Booleans in [0,1]\n",
      "#kBoolAnd: 266 (#enforced: 266) (#literals: 83'250)\n",
      "#kLinearN: 1 (#terms: 778)\n",
      "\n",
      "Preloading model.\n",
      "#Bound   8.73s best:-inf  next:[-0,396812] initial_domain\n",
      "[Symmetry] Graph for symmetry has 3'113 nodes and 169'080 arcs.\n",
      "[Symmetry] Symmetry computation done. time: 0.000762617 dtime: 0.00395454\n",
      "#Model   8.74s var:778/778 constraints:267/267\n",
      "\n",
      "Starting search at 8.74s with 16 workers.\n",
      "11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]\n",
      "4 first solution subsolvers: [fj_long_default, fj_short_default, fs_random, fs_random_quick_restart]\n",
      "9 incomplete subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, rins/rens, rnd_cst_lns, rnd_var_lns, violation_ls]\n",
      "3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]\n",
      "#Bound   8.76s best:-inf  next:[-0,364841] quick_restart\n",
      "#Bound   8.76s best:-inf  next:[-0,364838] quick_restart\n",
      "#1       8.77s best:-0    next:[1,364838] fj_short_default(batch:1 #lin_moves:0 #lin_evals:0 #weight_updates:0)\n",
      "#Bound   8.77s best:-0    next:[1,364837] quick_restart\n",
      "#2       8.77s best:969   next:[970,364837] violation_ls(batch:1 #solutions_imported:1 #lin_moves:0 #lin_evals:3 #gen_moves:1 #gen_evals:0 #comp_moves:1 #backtracks:0 #weight_updates:0)\n",
      "#Bound   8.77s best:969   next:[970,364836] quick_restart\n",
      "#3       8.77s best:326898 next:[326899,364836] fj_long_default(batch:1 #lin_moves:203 #lin_evals:597 #weight_updates:0)\n",
      "#4       8.78s best:327551 next:[327552,364836] quick_restart_no_lp (fixed_bools=0/778)\n",
      "#5       8.79s best:353620 next:[353621,364836] quick_restart (fixed_bools=0/778)\n",
      "#6       8.79s best:364422 next:[364423,364836] objective_lb_search (fixed_bools=0/779)\n",
      "Relative gap limit of 0.01 reached.\n",
      "#Model   8.79s var:772/778 constraints:261/267\n",
      "\n",
      "Task timing                          n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime\n",
      "                     'core':         1 [ 49.09ms,  49.09ms]  49.09ms   0.00ns  49.09ms         1 [ 12.76ms,  12.76ms]  12.76ms   0.00ns  12.76ms\n",
      "               'default_lp':         1 [ 49.88ms,  49.88ms]  49.88ms   0.00ns  49.88ms         1 [307.14us, 307.14us] 307.14us   0.00ns 307.14us\n",
      "         'feasibility_pump':         2 [  1.52ms,  19.47ms]  10.50ms   8.97ms  21.00ms         1 [ 18.75us,  18.75us]  18.75us   0.00ns  18.75us\n",
      "          'fj_long_default':         1 [ 11.38ms,  11.38ms]  11.38ms   0.00ns  11.38ms         1 [987.26us, 987.26us] 987.26us   0.00ns 987.26us\n",
      "         'fj_short_default':         1 [  4.56ms,   4.56ms]   4.56ms   0.00ns   4.56ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "                'fs_random':         1 [ 34.30ms,  34.30ms]  34.30ms   0.00ns  34.30ms         1 [ 20.00ns,  20.00ns]  20.00ns   0.00ns  20.00ns\n",
      "  'fs_random_quick_restart':         1 [ 29.43ms,  29.43ms]  29.43ms   0.00ns  29.43ms         1 [ 20.00ns,  20.00ns]  20.00ns   0.00ns  20.00ns\n",
      "            'graph_arc_lns':         1 [263.59ms, 263.59ms] 263.59ms   0.00ns 263.59ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "            'graph_cst_lns':         1 [ 10.70ms,  10.70ms]  10.70ms   0.00ns  10.70ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "            'graph_dec_lns':         1 [  6.12ms,   6.12ms]   6.12ms   0.00ns   6.12ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "            'graph_var_lns':         1 [ 55.77ms,  55.77ms]  55.77ms   0.00ns  55.77ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "           'lb_tree_search':         1 [ 91.51ms,  91.51ms]  91.51ms   0.00ns  91.51ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "                   'max_lp':         1 [ 89.10ms,  89.10ms]  89.10ms   0.00ns  89.10ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "                    'no_lp':         1 [ 50.39ms,  50.39ms]  50.39ms   0.00ns  50.39ms         1 [ 11.84ms,  11.84ms]  11.84ms   0.00ns  11.84ms\n",
      "      'objective_lb_search':         1 [ 47.85ms,  47.85ms]  47.85ms   0.00ns  47.85ms         1 [  1.89ms,   1.89ms]   1.89ms   0.00ns   1.89ms\n",
      "                  'probing':         1 [ 49.26ms,  49.26ms]  49.26ms   0.00ns  49.26ms         1 [309.49us, 309.49us] 309.49us   0.00ns 309.49us\n",
      "             'pseudo_costs':         1 [ 79.94ms,  79.94ms]  79.94ms   0.00ns  79.94ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "            'quick_restart':         1 [ 49.83ms,  49.83ms]  49.83ms   0.00ns  49.83ms         1 [  4.87ms,   4.87ms]   4.87ms   0.00ns   4.87ms\n",
      "      'quick_restart_no_lp':         1 [ 49.01ms,  49.01ms]  49.01ms   0.00ns  49.01ms         1 [ 10.13ms,  10.13ms]  10.13ms   0.00ns  10.13ms\n",
      "            'reduced_costs':         1 [ 78.59ms,  78.59ms]  78.59ms   0.00ns  78.59ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "                'rins/rens':         1 [ 26.40ms,  26.40ms]  26.40ms   0.00ns  26.40ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "              'rnd_cst_lns':         1 [ 12.99ms,  12.99ms]  12.99ms   0.00ns  12.99ms         1 [ 10.00ns,  10.00ns]  10.00ns   0.00ns  10.00ns\n",
      "              'rnd_var_lns':         1 [  8.55ms,   8.55ms]   8.55ms   0.00ns   8.55ms         1 [ 10.00ns,  10.00ns]  10.00ns   0.00ns  10.00ns\n",
      "             'violation_ls':         1 [  2.72ms,   2.72ms]   2.72ms   0.00ns   2.72ms         1 [ 25.52us,  25.52us]  25.52us   0.00ns  25.52us\n",
      "\n",
      "Search stats                  Bools  Conflicts  Branches  Restarts  BoolPropag  IntegerPropag\n",
      "                     'core':    778          0     3'579     1'639     276'087        279'668\n",
      "               'default_lp':    778          0     1'556     1'556     165'974        167'537\n",
      "                'fs_random':    778          0       348       348      34'815         35'164\n",
      "  'fs_random_quick_restart':    778          0     1'120     1'120     118'902        120'023\n",
      "           'lb_tree_search':    778          0     1'556     1'556     165'968        167'525\n",
      "                   'max_lp':    778          0     1'556     1'556     165'968        167'525\n",
      "                    'no_lp':    778         50     2'335     1'558     238'458        242'040\n",
      "      'objective_lb_search':    779          0     2'066     1'557     166'238        170'702\n",
      "                  'probing':    778          0     1'558     1'558     166'047        167'612\n",
      "             'pseudo_costs':    778          0     1'556     1'556     165'968        167'525\n",
      "            'quick_restart':    778          0     2'055     1'557     166'247        168'467\n",
      "      'quick_restart_no_lp':    778          6     2'840     1'807     250'978        254'911\n",
      "            'reduced_costs':    778          0     1'556     1'556     165'968        167'525\n",
      "\n",
      "SAT stats                     ClassicMinim  LitRemoved  LitLearned  LitForgotten  Subsumed  MClauses  MDecisions  MLitTrue  MSubsumed  MLitRemoved  MReused\n",
      "                     'core':             0           0           0             0         0         0           0         0          0            0        0\n",
      "               'default_lp':             0           0           0             0         0         0           0         0          0            0        0\n",
      "                'fs_random':             0           0           0             0         0         0           0         0          0            0        0\n",
      "  'fs_random_quick_restart':             0           0           0             0         0         0           0         0          0            0        0\n",
      "           'lb_tree_search':             0           0           0             0         0         0           0         0          0            0        0\n",
      "                   'max_lp':             0           0           0             0         0         0           0         0          0            0        0\n",
      "                    'no_lp':            50      12'311      15'427             0         0         0           0         0          0            0        0\n",
      "      'objective_lb_search':             0           0           0             0         0         0           0         0          0            0        0\n",
      "                  'probing':             0           0           0             0         0         0           0         0          0            0        0\n",
      "             'pseudo_costs':             0           0           0             0         0         0           0         0          0            0        0\n",
      "            'quick_restart':             0           0           0             0         0         0           0         0          0            0        0\n",
      "      'quick_restart_no_lp':             0           0           6             0         0         0           0         0          0            0        0\n",
      "            'reduced_costs':             0           0           0             0         0         0           0         0          0            0        0\n",
      "\n",
      "Lp stats                      Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.\n",
      "               'default_lp':          1           7         33        9        0        0\n",
      "                'fs_random':          1           0          0        0        0        0\n",
      "  'fs_random_quick_restart':          1           0          0        0        0        0\n",
      "           'lb_tree_search':          1           0          0        0        0        0\n",
      "                   'max_lp':          1           0          0        0        0        0\n",
      "      'objective_lb_search':          1          23         35       19        0        0\n",
      "                  'probing':          1           7         28        9        0        0\n",
      "             'pseudo_costs':          1           0          0        0        0        0\n",
      "            'quick_restart':          1          80         38       61        0        0\n",
      "            'reduced_costs':          1           0          0        0        0        0\n",
      "\n",
      "Lp dimension                                                                      Final dimension of first component\n",
      "               'default_lp':        9 rows, 778 columns, 6114 entries with magnitude in [6.676527e-03, 1.000000e+00]\n",
      "                'fs_random':           0 rows, 778 columns, 0 entries with magnitude in [0.000000e+00, 0.000000e+00]\n",
      "  'fs_random_quick_restart':           0 rows, 778 columns, 0 entries with magnitude in [0.000000e+00, 0.000000e+00]\n",
      "           'lb_tree_search':  82985 rows, 778 columns, 166746 entries with magnitude in [5.482711e-02, 1.000000e+00]\n",
      "                   'max_lp':  82985 rows, 778 columns, 166746 entries with magnitude in [5.482711e-02, 1.000000e+00]\n",
      "      'objective_lb_search':       10 rows, 778 columns, 6729 entries with magnitude in [5.947198e-03, 1.000000e+00]\n",
      "                  'probing':        8 rows, 778 columns, 5467 entries with magnitude in [5.924948e-03, 1.000000e+00]\n",
      "             'pseudo_costs':           0 rows, 778 columns, 0 entries with magnitude in [0.000000e+00, 0.000000e+00]\n",
      "            'quick_restart':       11 rows, 778 columns, 7428 entries with magnitude in [6.676527e-03, 1.000000e+00]\n",
      "            'reduced_costs':           0 rows, 778 columns, 0 entries with magnitude in [0.000000e+00, 0.000000e+00]\n",
      "\n",
      "Lp debug                      CutPropag  CutEqPropag  Adjust  Overflow  Bad  BadScaling\n",
      "               'default_lp':          0            0       2         0    5           0\n",
      "                'fs_random':          0            0       0         0    0           0\n",
      "  'fs_random_quick_restart':          0            0       0         0    0           0\n",
      "           'lb_tree_search':          0            0       0         0    0           0\n",
      "                   'max_lp':          0            0       0         0    0           0\n",
      "      'objective_lb_search':          0            0       5         0    9           0\n",
      "                  'probing':          0            0       2         0    1           0\n",
      "             'pseudo_costs':          0            0       0         0    0           0\n",
      "            'quick_restart':          0            0       8         0   12           0\n",
      "            'reduced_costs':          0            0       0         0    0           0\n",
      "\n",
      "Lp pool                       Constraints  Updates  Simplif  Merged  Shortened  Split  Strenghtened  Cuts/Call\n",
      "               'default_lp':           34        0        0       0          0      0           600      33/78\n",
      "                'fs_random':            1        0        0       0          0      0             0        0/0\n",
      "  'fs_random_quick_restart':            1        0        0       0          0      0             0        0/0\n",
      "           'lb_tree_search':       82'985        0        0       0          0      0             0        0/0\n",
      "                   'max_lp':       82'985        0        0       0          0      0             0        0/0\n",
      "      'objective_lb_search':           36        0        0       0          0      0           618      35/90\n",
      "                  'probing':           29        0        0       0          0      0             0      28/71\n",
      "             'pseudo_costs':       82'985        0        0       0          0      0             0        0/0\n",
      "            'quick_restart':           39        0        0       0          0      0           618      38/97\n",
      "            'reduced_costs':       82'985        0        0       0          0      0             0        0/0\n",
      "\n",
      "Lp Cut       default_lp  quick_restart  probing  objective_lb_search\n",
      "     CG_FF:           3              3        2                    3\n",
      "      CG_K:           3              3        1                    3\n",
      "      CG_R:           6              8        4                    8\n",
      "  MIR_1_FF:           7              8        7                    7\n",
      "   MIR_1_K:           7              8        7                    7\n",
      "   MIR_1_R:           7              8        7                    7\n",
      "\n",
      "LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit\n",
      "  'graph_arc_lns':           0/0      0%        0.50       0.10\n",
      "  'graph_cst_lns':           0/0      0%        0.50       0.10\n",
      "  'graph_dec_lns':           0/0      0%        0.50       0.10\n",
      "  'graph_var_lns':           0/0      0%        0.50       0.10\n",
      "      'rins/rens':           0/0      0%        0.50       0.10\n",
      "    'rnd_cst_lns':           1/1    100%        0.71       0.10\n",
      "    'rnd_var_lns':           1/1    100%        0.71       0.10\n",
      "\n",
      "LS stats               Batches  Restarts  LinMoves  GenMoves  CompoundMoves  WeightUpdates\n",
      "   'fj_long_default':        1         1       203         0              0              0\n",
      "  'fj_short_default':        1         1         0         0              0              0\n",
      "      'violation_ls':        1         0         0         1              1              0\n",
      "\n",
      "Solutions (6)             Num   Rank\n",
      "      'fj_long_default':    1  [3,3]\n",
      "     'fj_short_default':    1  [1,1]\n",
      "  'objective_lb_search':    1  [6,6]\n",
      "        'quick_restart':    1  [5,5]\n",
      "  'quick_restart_no_lp':    1  [4,4]\n",
      "         'violation_ls':    1  [2,2]\n",
      "\n",
      "Objective bounds     Num\n",
      "  'initial_domain':    1\n",
      "   'quick_restart':    4\n",
      "\n",
      "Solution repositories    Added  Queried  Ignored  Synchro\n",
      "  'feasible solutions':      8       13        0        8\n",
      "        'lp solutions':      0        0        0        0\n",
      "                'pump':      4        1\n",
      "\n",
      "Improving bounds shared    Num\n",
      "   'quick_restart_no_lp':    6\n",
      "\n",
      "CpSolverResponse summary:\n",
      "status: OPTIMAL\n",
      "objective: 364422\n",
      "best_bound: 364836\n",
      "integers: 807\n",
      "booleans: 778\n",
      "conflicts: 0\n",
      "branches: 1120\n",
      "propagations: 118902\n",
      "integer_propagations: 120023\n",
      "restarts: 1120\n",
      "lp_iterations: 0\n",
      "walltime: 9.06112\n",
      "usertime: 9.06112\n",
      "deterministic_time: 0.102059\n",
      "gap_integral: 0.456575\n",
      "solution_fingerprint: 0xb3438c657be4fb27\n",
      "\n",
      "\n",
      "Starting CP-SAT solver v9.10.4067\n",
      "Parameters: max_time_in_seconds: 15 log_search_progress: true relative_gap_limit: 0.01\n",
      "Setting number of workers to 16\n",
      "\n",
      "Initial optimization model '': (model_fingerprint: 0xb4abda800c7bbd14)\n",
      "#Variables: 800 (#bools: 800 in objective)\n",
      "  - 800 Booleans in [0,1]\n",
      "#kLinearN: 2 (#terms: 1'600)\n",
      "\n",
      "Starting presolve at 0.00s\n",
      "The solution hint is complete and is feasible.\n",
      "  2.34e+00s  0.00e+00d  [DetectDominanceRelations] \n",
      "  1.16e-01s  0.00e+00d  [DetectDominanceRelations] \n",
      "  2.45e+00s  0.00e+00d  [PresolveToFixPoint] #num_loops=3 #num_dual_strengthening=2 \n",
      "  4.17e-05s  0.00e+00d  [ExtractEncodingFromLinear] \n",
      "[Symmetry] Graph for symmetry has 2'637 nodes and 42'729 arcs.\n",
      "[Symmetry] Symmetry computation done. time: 0.000339385 dtime: 0.00120366\n",
      "[SAT presolve] num removable Booleans: 0 / 459\n",
      "[SAT presolve] num trivial clauses: 0\n",
      "[SAT presolve] [0s] clauses:19988 literals:39976 vars:459 one_side_vars:459 simple_definition:0 singleton_clauses:0\n",
      "[SAT presolve] [0.00245768s] clauses:19988 literals:39976 vars:459 one_side_vars:459 simple_definition:0 singleton_clauses:0\n",
      "[SAT presolve] [0.00251764s] clauses:19988 literals:39976 vars:459 one_side_vars:459 simple_definition:0 singleton_clauses:0\n",
      "  5.56e-03s  4.73e-03d  [Probe] #probed=918 \n",
      "  3.53e-02s  0.00e+00d  [MaxClique] \n",
      "  1.14e-01s  0.00e+00d  [DetectDominanceRelations] \n",
      "  1.20e-01s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "  1.84e-03s  0.00e+00d  [ProcessAtMostOneAndLinear] \n",
      "  7.10e-03s  0.00e+00d  [DetectDuplicateConstraints] #duplicates=1 \n",
      "  9.51e-05s  0.00e+00d  [DetectDominatedLinearConstraints] #relevant_constraints=1 \n",
      "  6.74e-05s  0.00e+00d  [DetectDifferentVariables] \n",
      "  5.07e-03s  1.92e-04d  [ProcessSetPPC] #relevant_constraints=19'989 \n",
      "  1.86e-04s  0.00e+00d  [FindAlmostIdenticalLinearConstraints] \n",
      "  1.86e-03s  2.31e-03d  [FindBigAtMostOneAndLinearOverlap] \n",
      "  2.91e-04s  1.26e-03d  [FindBigVerticalLinearOverlap] \n",
      "  8.45e-05s  2.30e-06d  [FindBigHorizontalLinearOverlap] #linears=1 \n",
      "  1.30e-04s  0.00e+00d  [MergeClauses] \n",
      "  1.48e-01s  0.00e+00d  [DetectDominanceRelations] \n",
      "  1.50e-01s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "  1.46e-01s  0.00e+00d  [DetectDominanceRelations] \n",
      "  1.47e-01s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "[Symmetry] Graph for symmetry has 2'178 nodes and 41'812 arcs.\n",
      "[Symmetry] Symmetry computation done. time: 0.000294281 dtime: 0.00112666\n",
      "[SAT presolve] num removable Booleans: 0 / 459\n",
      "[SAT presolve] num trivial clauses: 0\n",
      "[SAT presolve] [0s] clauses:19988 literals:39976 vars:459 one_side_vars:459 simple_definition:0 singleton_clauses:0\n",
      "[SAT presolve] [0.00246382s] clauses:19988 literals:39976 vars:459 one_side_vars:459 simple_definition:0 singleton_clauses:0\n",
      "[SAT presolve] [0.00252354s] clauses:19988 literals:39976 vars:459 one_side_vars:459 simple_definition:0 singleton_clauses:0\n",
      "  6.00e-03s  4.32e-03d  [Probe] #probed=918 \n",
      "  3.45e-02s  0.00e+00d  [MaxClique] \n",
      "  1.15e-01s  0.00e+00d  [DetectDominanceRelations] \n",
      "  1.19e-01s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "  1.22e-03s  0.00e+00d  [ProcessAtMostOneAndLinear] \n",
      "  7.09e-03s  0.00e+00d  [DetectDuplicateConstraints] \n",
      "  1.31e-04s  0.00e+00d  [DetectDominatedLinearConstraints] #relevant_constraints=1 \n",
      "  9.67e-05s  0.00e+00d  [DetectDifferentVariables] \n",
      "  5.04e-03s  1.93e-04d  [ProcessSetPPC] #relevant_constraints=19'989 \n",
      "  1.13e-04s  0.00e+00d  [FindAlmostIdenticalLinearConstraints] \n",
      "  1.95e-03s  2.31e-03d  [FindBigAtMostOneAndLinearOverlap] \n",
      "  3.32e-04s  1.26e-03d  [FindBigVerticalLinearOverlap] \n",
      "  9.94e-05s  2.30e-06d  [FindBigHorizontalLinearOverlap] #linears=1 \n",
      "  1.62e-04s  0.00e+00d  [MergeClauses] \n",
      "  1.49e-01s  0.00e+00d  [DetectDominanceRelations] \n",
      "  1.50e-01s  0.00e+00d  [PresolveToFixPoint] #num_loops=1 #num_dual_strengthening=1 \n",
      "  2.01e-04s  0.00e+00d  [ExpandObjective] \n",
      "\n",
      "Presolve summary:\n",
      "  - 0 affine relations were detected.\n",
      "  - rule 'TODO dual: only one blocking constraint?' was applied 1'802 times.\n",
      "  - rule 'TODO dual: only one unspecified blocking constraint?' was applied 1'168 times.\n",
      "  - rule 'domination: added implications' was applied 19'988 times.\n",
      "  - rule 'domination: fixed to lb.' was applied 341 times.\n",
      "  - rule 'duplicate: linear constraint parallel to objective' was applied 1 time.\n",
      "  - rule 'duplicate: removed constraint' was applied 1 time.\n",
      "  - rule 'duplicate: updated objective domain' was applied 1 time.\n",
      "  - rule 'linear: fixed or dup variables' was applied 2 times.\n",
      "  - rule 'linear: simplified rhs' was applied 4 times.\n",
      "  - rule 'presolve: 341 unused variables removed.' was applied 1 time.\n",
      "  - rule 'presolve: iteration' was applied 2 times.\n",
      "\n",
      "Presolved optimization model '': (model_fingerprint: 0x6d8199d943236054)\n",
      "#Variables: 459 (#bools: 459 in objective)\n",
      "  - 459 Booleans in [0,1]\n",
      "#kBoolAnd: 292 (#enforced: 292) (#literals: 20'280)\n",
      "#kLinearN: 1 (#terms: 459)\n",
      "\n",
      "Preloading model.\n",
      "#Bound   3.29s best:inf   next:[113002,271604] initial_domain\n",
      "The solution hint is complete, but it is infeasible! we will try to repair it.\n",
      "[Symmetry] Graph for symmetry has 1'837 nodes and 41'812 arcs.\n",
      "[Symmetry] Symmetry computation done. time: 0.000286306 dtime: 0.0011062\n",
      "#Model   3.29s var:459/459 constraints:293/293\n",
      "\n",
      "Starting search at 3.29s with 16 workers.\n",
      "11 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, probing, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]\n",
      "4 first solution subsolvers: [fj_long_default, fj_short_default, fs_random, fs_random_quick_restart]\n",
      "9 incomplete subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, rins/rens, rnd_cst_lns, rnd_var_lns, violation_ls]\n",
      "3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]\n",
      "#1       3.30s best:259331 next:[113002,259330] core (fixed_bools=0/459)\n",
      "#Bound   3.30s best:259331 next:[238146,259330] default_lp\n",
      "#Bound   3.30s best:259331 next:[238148,259330] default_lp\n",
      "#Bound   3.30s best:259331 next:[238150,259330] default_lp\n",
      "#2       3.30s best:259100 next:[238150,259099] violation_ls(batch:1 #solutions_imported:1 #lin_moves:0 #lin_evals:38 #gen_moves:2 #gen_evals:0 #comp_moves:2 #backtracks:0 #weight_updates:0)\n",
      "#Bound   3.30s best:259100 next:[238152,259099] default_lp\n",
      "#Bound   3.31s best:259100 next:[238154,259099] default_lp\n",
      "#3       3.31s best:258822 next:[238154,258821] quick_restart_no_lp (fixed_bools=0/459)\n",
      "#4       3.31s best:258740 next:[238154,258739] no_lp (fixed_bools=0/459)\n",
      "#5       3.32s best:258106 next:[238154,258105] no_lp (fixed_bools=0/459)\n",
      "#6       3.32s best:257582 next:[238154,257581] no_lp (fixed_bools=0/459)\n",
      "#7       3.32s best:257580 next:[238154,257579] no_lp (fixed_bools=0/459)\n",
      "#8       3.32s best:257428 next:[238154,257427] no_lp (fixed_bools=0/459)\n",
      "#9       3.32s best:257413 next:[238154,257412] no_lp (fixed_bools=0/459)\n",
      "#10      3.32s best:257331 next:[238154,257330] no_lp (fixed_bools=0/459)\n",
      "#11      3.33s best:257053 next:[238154,257052] quick_restart_no_lp (fixed_bools=0/459)\n",
      "#Bound   3.34s best:257053 next:[238155,257052] default_lp\n",
      "#Bound   3.34s best:257053 next:[238156,257052] default_lp\n",
      "#12      3.35s best:257039 next:[238156,257038] quick_restart_no_lp (fixed_bools=0/459)\n",
      "#13      3.35s best:256981 next:[238156,256980] quick_restart_no_lp (fixed_bools=0/459)\n",
      "#Bound   3.35s best:256981 next:[238157,256980] probing\n",
      "#14      3.35s best:238186 next:[238157,238185] default_lp (fixed_bools=0/459)\n",
      "Relative gap limit of 0.01 reached.\n",
      "\n",
      "Task timing                          n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime\n",
      "                     'core':         1 [ 66.81ms,  66.81ms]  66.81ms   0.00ns  66.81ms         1 [ 44.15ms,  44.15ms]  44.15ms   0.00ns  44.15ms\n",
      "               'default_lp':         1 [ 64.10ms,  64.10ms]  64.10ms   0.00ns  64.10ms         1 [  2.46ms,   2.46ms]   2.46ms   0.00ns   2.46ms\n",
      "         'feasibility_pump':         1 [  2.58ms,   2.58ms]   2.58ms   0.00ns   2.58ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "          'fj_long_default':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "         'fj_short_default':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "                'fs_random':         1 [  3.92ms,   3.92ms]   3.92ms   0.00ns   3.92ms         1 [ 20.00ns,  20.00ns]  20.00ns   0.00ns  20.00ns\n",
      "  'fs_random_quick_restart':         1 [  3.99ms,   3.99ms]   3.99ms   0.00ns   3.99ms         1 [ 20.00ns,  20.00ns]  20.00ns   0.00ns  20.00ns\n",
      "            'graph_arc_lns':         1 [ 54.31ms,  54.31ms]  54.31ms   0.00ns  54.31ms         1 [ 19.89ms,  19.89ms]  19.89ms   0.00ns  19.89ms\n",
      "            'graph_cst_lns':         1 [ 45.54ms,  45.54ms]  45.54ms   0.00ns  45.54ms         1 [  4.57ms,   4.57ms]   4.57ms   0.00ns   4.57ms\n",
      "            'graph_dec_lns':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "            'graph_var_lns':         1 [ 54.71ms,  54.71ms]  54.71ms   0.00ns  54.71ms         1 [ 10.02ms,  10.02ms]  10.02ms   0.00ns  10.02ms\n",
      "           'lb_tree_search':         1 [ 67.14ms,  67.14ms]  67.14ms   0.00ns  67.14ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "                   'max_lp':         1 [ 66.19ms,  66.19ms]  66.19ms   0.00ns  66.19ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "                    'no_lp':         1 [ 64.09ms,  64.09ms]  64.09ms   0.00ns  64.09ms         1 [  3.36ms,   3.36ms]   3.36ms   0.00ns   3.36ms\n",
      "      'objective_lb_search':         1 [ 64.87ms,  64.87ms]  64.87ms   0.00ns  64.87ms         1 [528.38us, 528.38us] 528.38us   0.00ns 528.38us\n",
      "                  'probing':         1 [ 64.14ms,  64.14ms]  64.14ms   0.00ns  64.14ms         1 [  1.09ms,   1.09ms]   1.09ms   0.00ns   1.09ms\n",
      "             'pseudo_costs':         1 [ 66.78ms,  66.78ms]  66.78ms   0.00ns  66.78ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "            'quick_restart':         1 [ 64.57ms,  64.57ms]  64.57ms   0.00ns  64.57ms         1 [  2.86ms,   2.86ms]   2.86ms   0.00ns   2.86ms\n",
      "      'quick_restart_no_lp':         1 [ 65.03ms,  65.03ms]  65.03ms   0.00ns  65.03ms         1 [  5.42ms,   5.42ms]   5.42ms   0.00ns   5.42ms\n",
      "            'reduced_costs':         1 [ 66.84ms,  66.84ms]  66.84ms   0.00ns  66.84ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "                'rins/rens':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns\n",
      "              'rnd_cst_lns':         1 [ 55.87ms,  55.87ms]  55.87ms   0.00ns  55.87ms         1 [ 11.49ms,  11.49ms]  11.49ms   0.00ns  11.49ms\n",
      "              'rnd_var_lns':         1 [ 55.48ms,  55.48ms]  55.48ms   0.00ns  55.48ms         1 [  5.90ms,   5.90ms]   5.90ms   0.00ns   5.90ms\n",
      "             'violation_ls':         1 [  4.17ms,   4.17ms]   4.17ms   0.00ns   4.17ms         1 [ 35.12us,  35.12us]  35.12us   0.00ns  35.12us\n",
      "\n",
      "Search stats                  Bools  Conflicts  Branches  Restarts  BoolPropag  IntegerPropag\n",
      "                     'core':    506        502    16'478     1'749     223'444        224'903\n",
      "               'default_lp':    459          0     2'368     1'379      79'879         92'812\n",
      "                'fs_random':    459          0         0         0           0              6\n",
      "  'fs_random_quick_restart':    459          0         0         0           0              6\n",
      "           'lb_tree_search':    459          0       918       918      39'976         40'899\n",
      "                   'max_lp':    459          0       918       918      39'976         40'896\n",
      "                    'no_lp':    459        440     2'881     1'386      94'219        114'813\n",
      "      'objective_lb_search':    459          0     2'070     1'378      79'718         91'859\n",
      "                  'probing':    459          0     2'068     1'380      79'739         91'884\n",
      "             'pseudo_costs':    459          0       918       918      39'976         40'896\n",
      "            'quick_restart':    459          6     2'098     1'378      80'275         92'961\n",
      "      'quick_restart_no_lp':    459        132     4'542     1'394      90'687        113'643\n",
      "            'reduced_costs':    459          0       918       918      39'976         40'896\n",
      "\n",
      "SAT stats                     ClassicMinim  LitRemoved  LitLearned  LitForgotten  Subsumed  MClauses  MDecisions  MLitTrue  MSubsumed  MLitRemoved  MReused\n",
      "                     'core':           364       2'661      18'193             0         5         0           0         0          0            0        0\n",
      "               'default_lp':             0           0           0             0         0         0           0         0          0            0        0\n",
      "                'fs_random':             0           0           0             0         0         0           0         0          0            0        0\n",
      "  'fs_random_quick_restart':             0           0           0             0         0         0           0         0          0            0        0\n",
      "           'lb_tree_search':             0           0           0             0         0         0           0         0          0            0        0\n",
      "                   'max_lp':             0           0           0             0         0         0           0         0          0            0        0\n",
      "                    'no_lp':           439     156'036      12'417             0         0         0           0         0          0            0        0\n",
      "      'objective_lb_search':             0           0           0             0         0         0           0         0          0            0        0\n",
      "                  'probing':             0           0           0             0         0         0           0         0          0            0        0\n",
      "             'pseudo_costs':             0           0           0             0         0         0           0         0          0            0        0\n",
      "            'quick_restart':             3         162       1'659             0         0         0           0         0          0            0        0\n",
      "      'quick_restart_no_lp':           124      34'856      10'164             0         2         0           0         0          0            0        0\n",
      "            'reduced_costs':             0           0           0             0         0         0           0         0          0            0        0\n",
      "\n",
      "Lp stats                      Component  Iterations  AddedCuts  OPTIMAL  DUAL_F.  DUAL_U.\n",
      "               'default_lp':          1         114         97      119        0        0\n",
      "                'fs_random':          1           0          0        0        0        0\n",
      "  'fs_random_quick_restart':          1           0          0        0        0        0\n",
      "           'lb_tree_search':          1           2          3        2        0        0\n",
      "                   'max_lp':          1           0          0        0        0        0\n",
      "      'objective_lb_search':          1          78         93      106        0        0\n",
      "                  'probing':          1          84        116      108        0        0\n",
      "             'pseudo_costs':          1           0          0        0        0        0\n",
      "            'quick_restart':          1         108         97      126        0        0\n",
      "            'reduced_costs':          1           0          0        0        0        0\n",
      "\n",
      "Lp dimension                                                                     Final dimension of first component\n",
      "               'default_lp':      25 rows, 459 columns, 9127 entries with magnitude in [1.033059e-02, 1.000000e+00]\n",
      "                'fs_random':          0 rows, 459 columns, 0 entries with magnitude in [0.000000e+00, 0.000000e+00]\n",
      "  'fs_random_quick_restart':          0 rows, 459 columns, 0 entries with magnitude in [0.000000e+00, 0.000000e+00]\n",
      "           'lb_tree_search':  19991 rows, 459 columns, 41193 entries with magnitude in [5.496497e-02, 1.000000e+00]\n",
      "                   'max_lp':  19989 rows, 459 columns, 40435 entries with magnitude in [5.496497e-02, 1.000000e+00]\n",
      "      'objective_lb_search':      25 rows, 459 columns, 8494 entries with magnitude in [1.033059e-02, 1.000000e+00]\n",
      "                  'probing':     33 rows, 459 columns, 11542 entries with magnitude in [9.508558e-03, 1.000000e+00]\n",
      "             'pseudo_costs':          0 rows, 459 columns, 0 entries with magnitude in [0.000000e+00, 0.000000e+00]\n",
      "            'quick_restart':      15 rows, 459 columns, 5658 entries with magnitude in [9.508558e-03, 1.000000e+00]\n",
      "            'reduced_costs':          0 rows, 459 columns, 0 entries with magnitude in [0.000000e+00, 0.000000e+00]\n",
      "\n",
      "Lp debug                      CutPropag  CutEqPropag  Adjust  Overflow  Bad  BadScaling\n",
      "               'default_lp':          0            0      14         0   66           0\n",
      "                'fs_random':          0            0       0         0    0           0\n",
      "  'fs_random_quick_restart':          0            0       0         0    0           0\n",
      "           'lb_tree_search':          0            0       0         0    0           0\n",
      "                   'max_lp':          0            0       0         0    0           0\n",
      "      'objective_lb_search':          0            0       6         0   58           0\n",
      "                  'probing':          0            0      10         0  120           0\n",
      "             'pseudo_costs':          0            0       0         0    0           0\n",
      "            'quick_restart':          0            0       7         0   66           0\n",
      "            'reduced_costs':          0            0       0         0    0           0\n",
      "\n",
      "Lp pool                       Constraints  Updates  Simplif  Merged  Shortened  Split  Strenghtened  Cuts/Call\n",
      "               'default_lp':           98        0        0       0          0      0             0     97/134\n",
      "                'fs_random':            1        0        0       0          0      0             0        0/0\n",
      "  'fs_random_quick_restart':            1        0        0       0          0      0             0        0/0\n",
      "           'lb_tree_search':       19'992        0        0       0          0      0             0        3/4\n",
      "                   'max_lp':       19'989        0        0       0          0      0             0        0/0\n",
      "      'objective_lb_search':           94        0        0       0          0      0             0     93/130\n",
      "                  'probing':          117        0        0       0          0      0             0    116/164\n",
      "             'pseudo_costs':       19'989        0        0       0          0      0             0        0/0\n",
      "            'quick_restart':           98        0        0       0          0      0             0     97/134\n",
      "            'reduced_costs':       19'989        0        0       0          0      0             0        0/0\n",
      "\n",
      "Lp Cut       default_lp  quick_restart  lb_tree_search  probing  objective_lb_search\n",
      "     CG_FF:          16             16               -       16                   16\n",
      "      CG_K:           5              5               -       10                    5\n",
      "     CG_KL:           4              4               -        5                    4\n",
      "      CG_R:          40             40               -       47                   36\n",
      "  MIR_1_FF:          11             11               1       13                   11\n",
      "   MIR_1_K:           6              6               1        7                    6\n",
      "  MIR_1_KL:           1              1               -        1                    1\n",
      "   MIR_1_R:          14             14               1       17                   14\n",
      "\n",
      "LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit\n",
      "  'graph_arc_lns':           1/1      0%        0.29       0.10\n",
      "  'graph_cst_lns':           1/1      0%        0.29       0.10\n",
      "  'graph_dec_lns':           0/0      0%        0.50       0.10\n",
      "  'graph_var_lns':           1/1      0%        0.29       0.10\n",
      "      'rins/rens':           0/0      0%        0.50       0.10\n",
      "    'rnd_cst_lns':           1/1      0%        0.29       0.10\n",
      "    'rnd_var_lns':           1/1      0%        0.29       0.10\n",
      "\n",
      "LS stats               Batches  Restarts  LinMoves  GenMoves  CompoundMoves  WeightUpdates\n",
      "   'fj_long_default':        0         0         0         0              0              0\n",
      "  'fj_short_default':        0         0         0         0              0              0\n",
      "      'violation_ls':        1         0         0         2              2              0\n",
      "\n",
      "Solutions (14)            Num     Rank\n",
      "                 'core':    1    [1,1]\n",
      "           'default_lp':    1  [14,14]\n",
      "                'no_lp':    7   [4,10]\n",
      "  'quick_restart_no_lp':    4   [3,13]\n",
      "         'violation_ls':    1    [2,2]\n",
      "\n",
      "Objective bounds     Num\n",
      "      'default_lp':    7\n",
      "  'initial_domain':    1\n",
      "         'probing':    1\n",
      "\n",
      "Solution repositories    Added  Queried  Ignored  Synchro\n",
      "  'feasible solutions':     23       11        1       15\n",
      "        'lp solutions':      0        0        0        0\n",
      "                'pump':      0        0\n",
      "\n",
      "CpSolverResponse summary:\n",
      "status: OPTIMAL\n",
      "objective: 238186\n",
      "best_bound: 238157\n",
      "integers: 481\n",
      "booleans: 459\n",
      "conflicts: 0\n",
      "branches: 0\n",
      "propagations: 0\n",
      "integer_propagations: 6\n",
      "restarts: 0\n",
      "lp_iterations: 0\n",
      "walltime: 3.36454\n",
      "usertime: 3.36454\n",
      "deterministic_time: 0.128362\n",
      "gap_integral: 0.414965\n",
      "solution_fingerprint: 0xe702ff49f024590b\n",
      "\n",
      "Solution 1:\n",
      "Num Selected items: 601\n",
      "Total weight of selected items: 271385\n",
      "Total value of selected items: 364422\n",
      "Solution 2:\n",
      "Num Selected items: 555\n",
      "Total weight of selected items: 238186\n",
      "Total value of selected items: 346207\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "\n",
    "instance_size = 800\n",
    "random_weights = [random.randint(1, 1000) for _ in range(instance_size)]\n",
    "random_values = [random.randint(1, 1000) for _ in range(instance_size)]\n",
    "random_capacity = 2 * (sum(random_weights) // 3)\n",
    "\n",
    "instance = KnapsackInstance(\n",
    "    weights=random_weights, values=random_values, capacity=random_capacity\n",
    ")\n",
    "config = KnapsackSolverConfig(time_limit=15, opt_tol=0.01, log_search_progress=True)\n",
    "solver = MultiObjectiveKnapsackSolver(instance, config)\n",
    "solution_1 = solver.solve()\n",
    "\n",
    "solver.fix_current_objective(\n",
    "    0.95\n",
    ")  # maintain at least 95% of the current objective value\n",
    "solver.set_minimize_weight_objective()  # change the objective to minimize the weight\n",
    "solution_2 = solver.solve()\n",
    "\n",
    "print(\"Solution 1:\")\n",
    "analyze_solution(instance, solution_1)\n",
    "print(\"Solution 2:\")\n",
    "analyze_solution(instance, solution_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9502805637073107"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "353607 / 372108"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "name: \"x_0\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_0\n",
      "name: \"x_1\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_1\n",
      "name: \"x_2\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_2\n",
      "name: \"x_3\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_3\n",
      "name: \"x_4\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_4\n",
      "name: \"x_5\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_5\n",
      "name: \"x_6\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_6\n",
      "name: \"x_7\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_7\n",
      "name: \"x_8\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_8\n",
      "name: \"x_9\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_9\n",
      "name: \"x_10\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_10\n",
      "name: \"x_11\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_11\n",
      "name: \"x_12\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_12\n",
      "name: \"x_13\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_13\n",
      "name: \"x_14\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_14\n",
      "name: \"x_15\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_15\n",
      "name: \"x_16\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_16\n",
      "name: \"x_17\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_17\n",
      "name: \"x_18\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_18\n",
      "name: \"x_19\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_19\n",
      "name: \"x_20\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_20\n",
      "name: \"x_21\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_21\n",
      "name: \"x_22\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_22\n",
      "name: \"x_23\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_23\n",
      "name: \"x_24\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_24\n",
      "name: \"x_25\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_25\n",
      "name: \"x_26\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_26\n",
      "name: \"x_27\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_27\n",
      "name: \"x_28\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_28\n",
      "name: \"x_29\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_29\n",
      "name: \"x_30\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_30\n",
      "name: \"x_31\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_31\n",
      "name: \"x_32\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_32\n",
      "name: \"x_33\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_33\n",
      "name: \"x_34\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_34\n",
      "name: \"x_35\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_35\n",
      "name: \"x_36\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_36\n",
      "name: \"x_37\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_37\n",
      "name: \"x_38\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_38\n",
      "name: \"x_39\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_39\n",
      "name: \"x_40\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_40\n",
      "name: \"x_41\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_41\n",
      "name: \"x_42\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_42\n",
      "name: \"x_43\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_43\n",
      "name: \"x_44\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_44\n",
      "name: \"x_45\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_45\n",
      "name: \"x_46\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_46\n",
      "name: \"x_47\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_47\n",
      "name: \"x_48\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_48\n",
      "name: \"x_49\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_49\n",
      "name: \"x_50\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_50\n",
      "name: \"x_51\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_51\n",
      "name: \"x_52\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_52\n",
      "name: \"x_53\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_53\n",
      "name: \"x_54\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_54\n",
      "name: \"x_55\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_55\n",
      "name: \"x_56\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_56\n",
      "name: \"x_57\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_57\n",
      "name: \"x_58\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_58\n",
      "name: \"x_59\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_59\n",
      "name: \"x_60\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_60\n",
      "name: \"x_61\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_61\n",
      "name: \"x_62\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_62\n",
      "name: \"x_63\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_63\n",
      "name: \"x_64\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_64\n",
      "name: \"x_65\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_65\n",
      "name: \"x_66\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_66\n",
      "name: \"x_67\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_67\n",
      "name: \"x_68\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_68\n",
      "name: \"x_69\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_69\n",
      "name: \"x_70\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_70\n",
      "name: \"x_71\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_71\n",
      "name: \"x_72\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_72\n",
      "name: \"x_73\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_73\n",
      "name: \"x_74\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_74\n",
      "name: \"x_75\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_75\n",
      "name: \"x_76\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_76\n",
      "name: \"x_77\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_77\n",
      "name: \"x_78\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_78\n",
      "name: \"x_79\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_79\n",
      "name: \"x_80\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_80\n",
      "name: \"x_81\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_81\n",
      "name: \"x_82\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_82\n",
      "name: \"x_83\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_83\n",
      "name: \"x_84\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_84\n",
      "name: \"x_85\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_85\n",
      "name: \"x_86\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_86\n",
      "name: \"x_87\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_87\n",
      "name: \"x_88\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_88\n",
      "name: \"x_89\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_89\n",
      "name: \"x_90\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_90\n",
      "name: \"x_91\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_91\n",
      "name: \"x_92\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_92\n",
      "name: \"x_93\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_93\n",
      "name: \"x_94\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_94\n",
      "name: \"x_95\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_95\n",
      "name: \"x_96\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_96\n",
      "name: \"x_97\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_97\n",
      "name: \"x_98\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_98\n",
      "name: \"x_99\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_99\n",
      "name: \"x_100\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_100\n",
      "name: \"x_101\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_101\n",
      "name: \"x_102\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_102\n",
      "name: \"x_103\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_103\n",
      "name: \"x_104\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_104\n",
      "name: \"x_105\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_105\n",
      "name: \"x_106\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_106\n",
      "name: \"x_107\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_107\n",
      "name: \"x_108\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_108\n",
      "name: \"x_109\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_109\n",
      "name: \"x_110\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_110\n",
      "name: \"x_111\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_111\n",
      "name: \"x_112\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_112\n",
      "name: \"x_113\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_113\n",
      "name: \"x_114\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_114\n",
      "name: \"x_115\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_115\n",
      "name: \"x_116\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_116\n",
      "name: \"x_117\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_117\n",
      "name: \"x_118\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_118\n",
      "name: \"x_119\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_119\n",
      "name: \"x_120\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_120\n",
      "name: \"x_121\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_121\n",
      "name: \"x_122\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_122\n",
      "name: \"x_123\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_123\n",
      "name: \"x_124\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_124\n",
      "name: \"x_125\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_125\n",
      "name: \"x_126\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_126\n",
      "name: \"x_127\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_127\n",
      "name: \"x_128\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_128\n",
      "name: \"x_129\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_129\n",
      "name: \"x_130\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_130\n",
      "name: \"x_131\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_131\n",
      "name: \"x_132\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_132\n",
      "name: \"x_133\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_133\n",
      "name: \"x_134\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_134\n",
      "name: \"x_135\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_135\n",
      "name: \"x_136\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_136\n",
      "name: \"x_137\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_137\n",
      "name: \"x_138\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_138\n",
      "name: \"x_139\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_139\n",
      "name: \"x_140\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_140\n",
      "name: \"x_141\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_141\n",
      "name: \"x_142\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_142\n",
      "name: \"x_143\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_143\n",
      "name: \"x_144\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_144\n",
      "name: \"x_145\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_145\n",
      "name: \"x_146\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_146\n",
      "name: \"x_147\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_147\n",
      "name: \"x_148\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_148\n",
      "name: \"x_149\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_149\n",
      "name: \"x_150\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_150\n",
      "name: \"x_151\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_151\n",
      "name: \"x_152\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_152\n",
      "name: \"x_153\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_153\n",
      "name: \"x_154\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_154\n",
      "name: \"x_155\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_155\n",
      "name: \"x_156\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_156\n",
      "name: \"x_157\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_157\n",
      "name: \"x_158\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_158\n",
      "name: \"x_159\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_159\n",
      "name: \"x_160\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_160\n",
      "name: \"x_161\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_161\n",
      "name: \"x_162\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_162\n",
      "name: \"x_163\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_163\n",
      "name: \"x_164\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_164\n",
      "name: \"x_165\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_165\n",
      "name: \"x_166\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_166\n",
      "name: \"x_167\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_167\n",
      "name: \"x_168\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_168\n",
      "name: \"x_169\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_169\n",
      "name: \"x_170\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_170\n",
      "name: \"x_171\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_171\n",
      "name: \"x_172\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_172\n",
      "name: \"x_173\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_173\n",
      "name: \"x_174\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_174\n",
      "name: \"x_175\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_175\n",
      "name: \"x_176\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_176\n",
      "name: \"x_177\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_177\n",
      "name: \"x_178\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_178\n",
      "name: \"x_179\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_179\n",
      "name: \"x_180\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_180\n",
      "name: \"x_181\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_181\n",
      "name: \"x_182\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_182\n",
      "name: \"x_183\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_183\n",
      "name: \"x_184\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_184\n",
      "name: \"x_185\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_185\n",
      "name: \"x_186\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_186\n",
      "name: \"x_187\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_187\n",
      "name: \"x_188\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_188\n",
      "name: \"x_189\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_189\n",
      "name: \"x_190\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_190\n",
      "name: \"x_191\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_191\n",
      "name: \"x_192\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_192\n",
      "name: \"x_193\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_193\n",
      "name: \"x_194\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_194\n",
      "name: \"x_195\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_195\n",
      "name: \"x_196\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_196\n",
      "name: \"x_197\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_197\n",
      "name: \"x_198\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_198\n",
      "name: \"x_199\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_199\n",
      "name: \"x_200\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_200\n",
      "name: \"x_201\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_201\n",
      "name: \"x_202\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_202\n",
      "name: \"x_203\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_203\n",
      "name: \"x_204\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_204\n",
      "name: \"x_205\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_205\n",
      "name: \"x_206\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_206\n",
      "name: \"x_207\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_207\n",
      "name: \"x_208\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_208\n",
      "name: \"x_209\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_209\n",
      "name: \"x_210\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_210\n",
      "name: \"x_211\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_211\n",
      "name: \"x_212\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_212\n",
      "name: \"x_213\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_213\n",
      "name: \"x_214\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_214\n",
      "name: \"x_215\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_215\n",
      "name: \"x_216\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_216\n",
      "name: \"x_217\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_217\n",
      "name: \"x_218\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_218\n",
      "name: \"x_219\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_219\n",
      "name: \"x_220\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_220\n",
      "name: \"x_221\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_221\n",
      "name: \"x_222\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_222\n",
      "name: \"x_223\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_223\n",
      "name: \"x_224\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_224\n",
      "name: \"x_225\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_225\n",
      "name: \"x_226\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_226\n",
      "name: \"x_227\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_227\n",
      "name: \"x_228\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_228\n",
      "name: \"x_229\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_229\n",
      "name: \"x_230\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_230\n",
      "name: \"x_231\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_231\n",
      "name: \"x_232\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_232\n",
      "name: \"x_233\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_233\n",
      "name: \"x_234\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_234\n",
      "name: \"x_235\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_235\n",
      "name: \"x_236\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_236\n",
      "name: \"x_237\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_237\n",
      "name: \"x_238\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_238\n",
      "name: \"x_239\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_239\n",
      "name: \"x_240\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_240\n",
      "name: \"x_241\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_241\n",
      "name: \"x_242\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_242\n",
      "name: \"x_243\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_243\n",
      "name: \"x_244\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_244\n",
      "name: \"x_245\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_245\n",
      "name: \"x_246\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_246\n",
      "name: \"x_247\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_247\n",
      "name: \"x_248\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_248\n",
      "name: \"x_249\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_249\n",
      "name: \"x_250\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_250\n",
      "name: \"x_251\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_251\n",
      "name: \"x_252\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_252\n",
      "name: \"x_253\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_253\n",
      "name: \"x_254\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_254\n",
      "name: \"x_255\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_255\n",
      "name: \"x_256\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_256\n",
      "name: \"x_257\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_257\n",
      "name: \"x_258\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_258\n",
      "name: \"x_259\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_259\n",
      "name: \"x_260\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_260\n",
      "name: \"x_261\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_261\n",
      "name: \"x_262\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_262\n",
      "name: \"x_263\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_263\n",
      "name: \"x_264\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_264\n",
      "name: \"x_265\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_265\n",
      "name: \"x_266\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_266\n",
      "name: \"x_267\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_267\n",
      "name: \"x_268\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_268\n",
      "name: \"x_269\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_269\n",
      "name: \"x_270\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_270\n",
      "name: \"x_271\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_271\n",
      "name: \"x_272\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_272\n",
      "name: \"x_273\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_273\n",
      "name: \"x_274\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_274\n",
      "name: \"x_275\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_275\n",
      "name: \"x_276\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_276\n",
      "name: \"x_277\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_277\n",
      "name: \"x_278\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_278\n",
      "name: \"x_279\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_279\n",
      "name: \"x_280\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_280\n",
      "name: \"x_281\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_281\n",
      "name: \"x_282\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_282\n",
      "name: \"x_283\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_283\n",
      "name: \"x_284\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_284\n",
      "name: \"x_285\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_285\n",
      "name: \"x_286\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_286\n",
      "name: \"x_287\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_287\n",
      "name: \"x_288\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_288\n",
      "name: \"x_289\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_289\n",
      "name: \"x_290\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_290\n",
      "name: \"x_291\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_291\n",
      "name: \"x_292\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_292\n",
      "name: \"x_293\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_293\n",
      "name: \"x_294\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_294\n",
      "name: \"x_295\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_295\n",
      "name: \"x_296\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_296\n",
      "name: \"x_297\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_297\n",
      "name: \"x_298\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_298\n",
      "name: \"x_299\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_299\n",
      "name: \"x_300\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_300\n",
      "name: \"x_301\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_301\n",
      "name: \"x_302\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_302\n",
      "name: \"x_303\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_303\n",
      "name: \"x_304\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_304\n",
      "name: \"x_305\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_305\n",
      "name: \"x_306\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_306\n",
      "name: \"x_307\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_307\n",
      "name: \"x_308\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_308\n",
      "name: \"x_309\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_309\n",
      "name: \"x_310\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_310\n",
      "name: \"x_311\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_311\n",
      "name: \"x_312\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_312\n",
      "name: \"x_313\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_313\n",
      "name: \"x_314\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_314\n",
      "name: \"x_315\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_315\n",
      "name: \"x_316\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_316\n",
      "name: \"x_317\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_317\n",
      "name: \"x_318\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_318\n",
      "name: \"x_319\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_319\n",
      "name: \"x_320\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_320\n",
      "name: \"x_321\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_321\n",
      "name: \"x_322\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_322\n",
      "name: \"x_323\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_323\n",
      "name: \"x_324\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_324\n",
      "name: \"x_325\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_325\n",
      "name: \"x_326\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_326\n",
      "name: \"x_327\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_327\n",
      "name: \"x_328\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_328\n",
      "name: \"x_329\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_329\n",
      "name: \"x_330\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_330\n",
      "name: \"x_331\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_331\n",
      "name: \"x_332\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_332\n",
      "name: \"x_333\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_333\n",
      "name: \"x_334\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_334\n",
      "name: \"x_335\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_335\n",
      "name: \"x_336\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_336\n",
      "name: \"x_337\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_337\n",
      "name: \"x_338\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_338\n",
      "name: \"x_339\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_339\n",
      "name: \"x_340\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_340\n",
      "name: \"x_341\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_341\n",
      "name: \"x_342\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_342\n",
      "name: \"x_343\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_343\n",
      "name: \"x_344\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_344\n",
      "name: \"x_345\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_345\n",
      "name: \"x_346\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_346\n",
      "name: \"x_347\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_347\n",
      "name: \"x_348\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_348\n",
      "name: \"x_349\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_349\n",
      "name: \"x_350\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_350\n",
      "name: \"x_351\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_351\n",
      "name: \"x_352\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_352\n",
      "name: \"x_353\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_353\n",
      "name: \"x_354\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_354\n",
      "name: \"x_355\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_355\n",
      "name: \"x_356\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_356\n",
      "name: \"x_357\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_357\n",
      "name: \"x_358\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_358\n",
      "name: \"x_359\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_359\n",
      "name: \"x_360\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_360\n",
      "name: \"x_361\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_361\n",
      "name: \"x_362\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_362\n",
      "name: \"x_363\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_363\n",
      "name: \"x_364\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_364\n",
      "name: \"x_365\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_365\n",
      "name: \"x_366\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_366\n",
      "name: \"x_367\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_367\n",
      "name: \"x_368\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_368\n",
      "name: \"x_369\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_369\n",
      "name: \"x_370\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_370\n",
      "name: \"x_371\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_371\n",
      "name: \"x_372\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_372\n",
      "name: \"x_373\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_373\n",
      "name: \"x_374\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_374\n",
      "name: \"x_375\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_375\n",
      "name: \"x_376\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_376\n",
      "name: \"x_377\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_377\n",
      "name: \"x_378\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_378\n",
      "name: \"x_379\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_379\n",
      "name: \"x_380\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_380\n",
      "name: \"x_381\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_381\n",
      "name: \"x_382\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_382\n",
      "name: \"x_383\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_383\n",
      "name: \"x_384\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_384\n",
      "name: \"x_385\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_385\n",
      "name: \"x_386\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_386\n",
      "name: \"x_387\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_387\n",
      "name: \"x_388\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_388\n",
      "name: \"x_389\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_389\n",
      "name: \"x_390\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_390\n",
      "name: \"x_391\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_391\n",
      "name: \"x_392\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_392\n",
      "name: \"x_393\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_393\n",
      "name: \"x_394\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_394\n",
      "name: \"x_395\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_395\n",
      "name: \"x_396\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_396\n",
      "name: \"x_397\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_397\n",
      "name: \"x_398\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_398\n",
      "name: \"x_399\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_399\n",
      "name: \"x_400\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_400\n",
      "name: \"x_401\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_401\n",
      "name: \"x_402\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_402\n",
      "name: \"x_403\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_403\n",
      "name: \"x_404\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_404\n",
      "name: \"x_405\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_405\n",
      "name: \"x_406\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_406\n",
      "name: \"x_407\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_407\n",
      "name: \"x_408\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_408\n",
      "name: \"x_409\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_409\n",
      "name: \"x_410\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_410\n",
      "name: \"x_411\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_411\n",
      "name: \"x_412\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_412\n",
      "name: \"x_413\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_413\n",
      "name: \"x_414\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_414\n",
      "name: \"x_415\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_415\n",
      "name: \"x_416\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_416\n",
      "name: \"x_417\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_417\n",
      "name: \"x_418\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_418\n",
      "name: \"x_419\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_419\n",
      "name: \"x_420\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_420\n",
      "name: \"x_421\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_421\n",
      "name: \"x_422\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_422\n",
      "name: \"x_423\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_423\n",
      "name: \"x_424\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_424\n",
      "name: \"x_425\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_425\n",
      "name: \"x_426\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_426\n",
      "name: \"x_427\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_427\n",
      "name: \"x_428\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_428\n",
      "name: \"x_429\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_429\n",
      "name: \"x_430\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_430\n",
      "name: \"x_431\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_431\n",
      "name: \"x_432\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_432\n",
      "name: \"x_433\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_433\n",
      "name: \"x_434\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_434\n",
      "name: \"x_435\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_435\n",
      "name: \"x_436\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_436\n",
      "name: \"x_437\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_437\n",
      "name: \"x_438\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_438\n",
      "name: \"x_439\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_439\n",
      "name: \"x_440\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_440\n",
      "name: \"x_441\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_441\n",
      "name: \"x_442\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_442\n",
      "name: \"x_443\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_443\n",
      "name: \"x_444\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_444\n",
      "name: \"x_445\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_445\n",
      "name: \"x_446\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_446\n",
      "name: \"x_447\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_447\n",
      "name: \"x_448\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_448\n",
      "name: \"x_449\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_449\n",
      "name: \"x_450\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_450\n",
      "name: \"x_451\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_451\n",
      "name: \"x_452\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_452\n",
      "name: \"x_453\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_453\n",
      "name: \"x_454\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_454\n",
      "name: \"x_455\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_455\n",
      "name: \"x_456\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_456\n",
      "name: \"x_457\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_457\n",
      "name: \"x_458\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_458\n",
      "name: \"x_459\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_459\n",
      "name: \"x_460\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_460\n",
      "name: \"x_461\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_461\n",
      "name: \"x_462\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_462\n",
      "name: \"x_463\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_463\n",
      "name: \"x_464\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_464\n",
      "name: \"x_465\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_465\n",
      "name: \"x_466\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_466\n",
      "name: \"x_467\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_467\n",
      "name: \"x_468\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_468\n",
      "name: \"x_469\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_469\n",
      "name: \"x_470\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_470\n",
      "name: \"x_471\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_471\n",
      "name: \"x_472\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_472\n",
      "name: \"x_473\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_473\n",
      "name: \"x_474\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_474\n",
      "name: \"x_475\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_475\n",
      "name: \"x_476\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_476\n",
      "name: \"x_477\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_477\n",
      "name: \"x_478\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_478\n",
      "name: \"x_479\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_479\n",
      "name: \"x_480\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_480\n",
      "name: \"x_481\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_481\n",
      "name: \"x_482\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_482\n",
      "name: \"x_483\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_483\n",
      "name: \"x_484\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_484\n",
      "name: \"x_485\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_485\n",
      "name: \"x_486\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_486\n",
      "name: \"x_487\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_487\n",
      "name: \"x_488\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_488\n",
      "name: \"x_489\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_489\n",
      "name: \"x_490\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_490\n",
      "name: \"x_491\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_491\n",
      "name: \"x_492\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_492\n",
      "name: \"x_493\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_493\n",
      "name: \"x_494\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_494\n",
      "name: \"x_495\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_495\n",
      "name: \"x_496\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_496\n",
      "name: \"x_497\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_497\n",
      "name: \"x_498\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_498\n",
      "name: \"x_499\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_499\n",
      "name: \"x_500\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_500\n",
      "name: \"x_501\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_501\n",
      "name: \"x_502\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_502\n",
      "name: \"x_503\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_503\n",
      "name: \"x_504\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_504\n",
      "name: \"x_505\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_505\n",
      "name: \"x_506\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_506\n",
      "name: \"x_507\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_507\n",
      "name: \"x_508\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_508\n",
      "name: \"x_509\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_509\n",
      "name: \"x_510\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_510\n",
      "name: \"x_511\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_511\n",
      "name: \"x_512\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_512\n",
      "name: \"x_513\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_513\n",
      "name: \"x_514\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_514\n",
      "name: \"x_515\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_515\n",
      "name: \"x_516\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_516\n",
      "name: \"x_517\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_517\n",
      "name: \"x_518\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_518\n",
      "name: \"x_519\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_519\n",
      "name: \"x_520\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_520\n",
      "name: \"x_521\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_521\n",
      "name: \"x_522\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_522\n",
      "name: \"x_523\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_523\n",
      "name: \"x_524\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_524\n",
      "name: \"x_525\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_525\n",
      "name: \"x_526\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_526\n",
      "name: \"x_527\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_527\n",
      "name: \"x_528\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_528\n",
      "name: \"x_529\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_529\n",
      "name: \"x_530\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_530\n",
      "name: \"x_531\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_531\n",
      "name: \"x_532\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_532\n",
      "name: \"x_533\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_533\n",
      "name: \"x_534\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_534\n",
      "name: \"x_535\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_535\n",
      "name: \"x_536\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_536\n",
      "name: \"x_537\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_537\n",
      "name: \"x_538\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_538\n",
      "name: \"x_539\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_539\n",
      "name: \"x_540\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_540\n",
      "name: \"x_541\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_541\n",
      "name: \"x_542\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_542\n",
      "name: \"x_543\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_543\n",
      "name: \"x_544\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_544\n",
      "name: \"x_545\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_545\n",
      "name: \"x_546\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_546\n",
      "name: \"x_547\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_547\n",
      "name: \"x_548\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_548\n",
      "name: \"x_549\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_549\n",
      "name: \"x_550\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_550\n",
      "name: \"x_551\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_551\n",
      "name: \"x_552\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_552\n",
      "name: \"x_553\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_553\n",
      "name: \"x_554\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_554\n",
      "name: \"x_555\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_555\n",
      "name: \"x_556\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_556\n",
      "name: \"x_557\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_557\n",
      "name: \"x_558\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_558\n",
      "name: \"x_559\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_559\n",
      "name: \"x_560\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_560\n",
      "name: \"x_561\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_561\n",
      "name: \"x_562\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_562\n",
      "name: \"x_563\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_563\n",
      "name: \"x_564\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_564\n",
      "name: \"x_565\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_565\n",
      "name: \"x_566\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_566\n",
      "name: \"x_567\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_567\n",
      "name: \"x_568\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_568\n",
      "name: \"x_569\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_569\n",
      "name: \"x_570\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_570\n",
      "name: \"x_571\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_571\n",
      "name: \"x_572\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_572\n",
      "name: \"x_573\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_573\n",
      "name: \"x_574\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_574\n",
      "name: \"x_575\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_575\n",
      "name: \"x_576\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_576\n",
      "name: \"x_577\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_577\n",
      "name: \"x_578\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_578\n",
      "name: \"x_579\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_579\n",
      "name: \"x_580\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_580\n",
      "name: \"x_581\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_581\n",
      "name: \"x_582\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_582\n",
      "name: \"x_583\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_583\n",
      "name: \"x_584\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_584\n",
      "name: \"x_585\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_585\n",
      "name: \"x_586\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_586\n",
      "name: \"x_587\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_587\n",
      "name: \"x_588\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_588\n",
      "name: \"x_589\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_589\n",
      "name: \"x_590\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_590\n",
      "name: \"x_591\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_591\n",
      "name: \"x_592\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_592\n",
      "name: \"x_593\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_593\n",
      "name: \"x_594\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_594\n",
      "name: \"x_595\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_595\n",
      "name: \"x_596\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_596\n",
      "name: \"x_597\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_597\n",
      "name: \"x_598\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_598\n",
      "name: \"x_599\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_599\n",
      "name: \"x_600\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_600\n",
      "name: \"x_601\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_601\n",
      "name: \"x_602\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_602\n",
      "name: \"x_603\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_603\n",
      "name: \"x_604\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_604\n",
      "name: \"x_605\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_605\n",
      "name: \"x_606\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_606\n",
      "name: \"x_607\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_607\n",
      "name: \"x_608\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_608\n",
      "name: \"x_609\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_609\n",
      "name: \"x_610\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_610\n",
      "name: \"x_611\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_611\n",
      "name: \"x_612\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_612\n",
      "name: \"x_613\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_613\n",
      "name: \"x_614\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_614\n",
      "name: \"x_615\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_615\n",
      "name: \"x_616\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_616\n",
      "name: \"x_617\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_617\n",
      "name: \"x_618\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_618\n",
      "name: \"x_619\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_619\n",
      "name: \"x_620\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_620\n",
      "name: \"x_621\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_621\n",
      "name: \"x_622\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_622\n",
      "name: \"x_623\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_623\n",
      "name: \"x_624\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_624\n",
      "name: \"x_625\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_625\n",
      "name: \"x_626\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_626\n",
      "name: \"x_627\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_627\n",
      "name: \"x_628\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_628\n",
      "name: \"x_629\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_629\n",
      "name: \"x_630\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_630\n",
      "name: \"x_631\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_631\n",
      "name: \"x_632\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_632\n",
      "name: \"x_633\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_633\n",
      "name: \"x_634\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_634\n",
      "name: \"x_635\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_635\n",
      "name: \"x_636\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_636\n",
      "name: \"x_637\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_637\n",
      "name: \"x_638\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_638\n",
      "name: \"x_639\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_639\n",
      "name: \"x_640\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_640\n",
      "name: \"x_641\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_641\n",
      "name: \"x_642\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_642\n",
      "name: \"x_643\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_643\n",
      "name: \"x_644\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_644\n",
      "name: \"x_645\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_645\n",
      "name: \"x_646\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_646\n",
      "name: \"x_647\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_647\n",
      "name: \"x_648\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_648\n",
      "name: \"x_649\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_649\n",
      "name: \"x_650\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_650\n",
      "name: \"x_651\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_651\n",
      "name: \"x_652\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_652\n",
      "name: \"x_653\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_653\n",
      "name: \"x_654\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_654\n",
      "name: \"x_655\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_655\n",
      "name: \"x_656\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_656\n",
      "name: \"x_657\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_657\n",
      "name: \"x_658\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_658\n",
      "name: \"x_659\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_659\n",
      "name: \"x_660\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_660\n",
      "name: \"x_661\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_661\n",
      "name: \"x_662\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_662\n",
      "name: \"x_663\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_663\n",
      "name: \"x_664\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_664\n",
      "name: \"x_665\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_665\n",
      "name: \"x_666\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_666\n",
      "name: \"x_667\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_667\n",
      "name: \"x_668\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_668\n",
      "name: \"x_669\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_669\n",
      "name: \"x_670\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_670\n",
      "name: \"x_671\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_671\n",
      "name: \"x_672\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_672\n",
      "name: \"x_673\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_673\n",
      "name: \"x_674\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_674\n",
      "name: \"x_675\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_675\n",
      "name: \"x_676\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_676\n",
      "name: \"x_677\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_677\n",
      "name: \"x_678\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_678\n",
      "name: \"x_679\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_679\n",
      "name: \"x_680\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_680\n",
      "name: \"x_681\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_681\n",
      "name: \"x_682\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_682\n",
      "name: \"x_683\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_683\n",
      "name: \"x_684\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_684\n",
      "name: \"x_685\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_685\n",
      "name: \"x_686\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_686\n",
      "name: \"x_687\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_687\n",
      "name: \"x_688\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_688\n",
      "name: \"x_689\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_689\n",
      "name: \"x_690\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_690\n",
      "name: \"x_691\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_691\n",
      "name: \"x_692\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_692\n",
      "name: \"x_693\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_693\n",
      "name: \"x_694\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_694\n",
      "name: \"x_695\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_695\n",
      "name: \"x_696\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_696\n",
      "name: \"x_697\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_697\n",
      "name: \"x_698\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_698\n",
      "name: \"x_699\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_699\n",
      "name: \"x_700\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_700\n",
      "name: \"x_701\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_701\n",
      "name: \"x_702\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_702\n",
      "name: \"x_703\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_703\n",
      "name: \"x_704\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_704\n",
      "name: \"x_705\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_705\n",
      "name: \"x_706\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_706\n",
      "name: \"x_707\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_707\n",
      "name: \"x_708\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_708\n",
      "name: \"x_709\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_709\n",
      "name: \"x_710\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_710\n",
      "name: \"x_711\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_711\n",
      "name: \"x_712\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_712\n",
      "name: \"x_713\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_713\n",
      "name: \"x_714\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_714\n",
      "name: \"x_715\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_715\n",
      "name: \"x_716\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_716\n",
      "name: \"x_717\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_717\n",
      "name: \"x_718\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_718\n",
      "name: \"x_719\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_719\n",
      "name: \"x_720\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_720\n",
      "name: \"x_721\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_721\n",
      "name: \"x_722\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_722\n",
      "name: \"x_723\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_723\n",
      "name: \"x_724\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_724\n",
      "name: \"x_725\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_725\n",
      "name: \"x_726\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_726\n",
      "name: \"x_727\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_727\n",
      "name: \"x_728\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_728\n",
      "name: \"x_729\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_729\n",
      "name: \"x_730\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_730\n",
      "name: \"x_731\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_731\n",
      "name: \"x_732\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_732\n",
      "name: \"x_733\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_733\n",
      "name: \"x_734\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_734\n",
      "name: \"x_735\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_735\n",
      "name: \"x_736\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_736\n",
      "name: \"x_737\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_737\n",
      "name: \"x_738\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_738\n",
      "name: \"x_739\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_739\n",
      "name: \"x_740\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_740\n",
      "name: \"x_741\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_741\n",
      "name: \"x_742\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_742\n",
      "name: \"x_743\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_743\n",
      "name: \"x_744\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_744\n",
      "name: \"x_745\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_745\n",
      "name: \"x_746\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_746\n",
      "name: \"x_747\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_747\n",
      "name: \"x_748\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_748\n",
      "name: \"x_749\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_749\n",
      "name: \"x_750\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_750\n",
      "name: \"x_751\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_751\n",
      "name: \"x_752\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_752\n",
      "name: \"x_753\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_753\n",
      "name: \"x_754\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_754\n",
      "name: \"x_755\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_755\n",
      "name: \"x_756\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_756\n",
      "name: \"x_757\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_757\n",
      "name: \"x_758\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_758\n",
      "name: \"x_759\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_759\n",
      "name: \"x_760\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_760\n",
      "name: \"x_761\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_761\n",
      "name: \"x_762\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_762\n",
      "name: \"x_763\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_763\n",
      "name: \"x_764\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_764\n",
      "name: \"x_765\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_765\n",
      "name: \"x_766\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_766\n",
      "name: \"x_767\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_767\n",
      "name: \"x_768\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_768\n",
      "name: \"x_769\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_769\n",
      "name: \"x_770\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_770\n",
      "name: \"x_771\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_771\n",
      "name: \"x_772\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_772\n",
      "name: \"x_773\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_773\n",
      "name: \"x_774\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_774\n",
      "name: \"x_775\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_775\n",
      "name: \"x_776\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_776\n",
      "name: \"x_777\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_777\n",
      "name: \"x_778\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_778\n",
      "name: \"x_779\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_779\n",
      "name: \"x_780\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_780\n",
      "name: \"x_781\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_781\n",
      "name: \"x_782\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_782\n",
      "name: \"x_783\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_783\n",
      "name: \"x_784\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_784\n",
      "name: \"x_785\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_785\n",
      "name: \"x_786\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_786\n",
      "name: \"x_787\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_787\n",
      "name: \"x_788\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_788\n",
      "name: \"x_789\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_789\n",
      "name: \"x_790\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_790\n",
      "name: \"x_791\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_791\n",
      "name: \"x_792\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_792\n",
      "name: \"x_793\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_793\n",
      "name: \"x_794\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_794\n",
      "name: \"x_795\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_795\n",
      "name: \"x_796\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_796\n",
      "name: \"x_797\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_797\n",
      "name: \"x_798\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_798\n",
      "name: \"x_799\"\n",
      "domain: 0\n",
      "domain: 1\n",
      " x_799\n"
     ]
    }
   ],
   "source": [
    "for i, v in enumerate(solver.model.proto.variables):\n",
    "    v_ = solver.model.get_int_var_from_proto_index(i)\n",
    "    print(v, v_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "mo312",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
